package br.com.manutencao;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import br.com.manutencao.entidade.Carro;
import br.com.manutencao.entidade.Montadora;

@Path("/montadoras")
public class MontadoraResource 
{
	static private Map<Integer, Montadora> montadorasMap;
	static private Map<Integer, Carro> carrosMap;
	
	static{
		montadorasMap = new HashMap<>();
		carrosMap = new HashMap<>();
		
		Montadora m1 = new Montadora();
		m1.setIdMontadora(0);
		m1.setNomeMontadora("Volkswagen");
		montadorasMap.put(m1.getIdMontadora(), m1);
		
		Montadora m2 = new Montadora();
		m2.setIdMontadora(1);
		m2.setNomeMontadora("Fiat");
		montadorasMap.put(m2.getIdMontadora(), m2);

		Carro c1 = new Carro();
		
		c1.setIdCarro(0); 
		c1.setModeloCarro("Fox");
		c1.setIdMontadora(m1.getIdMontadora());
		
		carrosMap.put( c1.getIdCarro(), c1 );
		
		Carro c2 = new Carro();
		c2.setIdCarro(1); 
		c2.setModeloCarro("Saveiro");
		c2.setIdMontadora(m1.getIdMontadora());
		
		carrosMap.put( c2.getIdCarro(), c2 );
		
		Carro c3 = new Carro();
		c3.setIdCarro(2); 
		c3.setModeloCarro("Uno");
		c3.setIdMontadora(m2.getIdMontadora());
		
		carrosMap.put( c3.getIdCarro(), c3 );
	}
	
	@GET
	@Produces(MediaType.APPLICATION_JSON)
	public List<Montadora> getMontadoras()
	{
		return new ArrayList<>(montadorasMap.values());
	}
	
	@GET
	@Produces(MediaType.APPLICATION_JSON)
	@Path("/carros")
	public List<Carro> getCarros( @QueryParam("idMontadora") String idMontadora )
	{
		ArrayList<Carro> carros = new ArrayList<>();
		
		for( Carro carro : carrosMap.values() )
		{
			if( carro.getIdMontadora() == Integer.valueOf(idMontadora) )
				carros.add(carro);
		}
		
		return carros;
	}
}